import request from '@/utils/request'

export default function Restful(url) {
  this.REST_BASE_URL = url
  this.pageSize = 10
  this.currentPage = 1

  this.defaultQueryConditions = {
    pageSize: this.pageSize,
    currentPage: this.currentPage,
    orderInfo: ['-id']
  }

  /**
   * 查询所有数据(不带分页)
   * @param query 查询条件
   * @returns AxiosPromise 请求结果
   */
  this.fetchAll = function(query) {
    return request({
      url: `${this.REST_BASE_URL}/`,
      method: 'get',
      params: { orderInfo: ['-id'], ...query }
    })
  }

  /**
   * 查询list
   * @param query 查询条件
   * @returns AxiosPromise 请求结果
   */
  this.fetchList = function(query) {
    return request({
      url: `${this.REST_BASE_URL}/page`,
      method: 'get',
      params: { ...this.defaultQueryConditions, ...query }
    })
  }

  /**
   * 添加数据
   * @param data 待添加数据
   * @returns AxiosPromise 请求结果
   */
  this.createData = function(data) {
    return request({
      url: this.REST_BASE_URL,
      method: 'post',
      data
    })
  }

  /**
   * 修改数据
   * @param data 待修改数据
   * @returns AxiosPromise 请求结果
   */
  this.updateData = function(data) {
    return request({
      url: this.REST_BASE_URL,
      method: 'put',
      data
    })
  }

  /**
   * 删除数据
   * @param id 待删除数据id
   * @returns AxiosPromise 请求结果
   */
  this.removeData = function(id) {
    return request({
      url: this.REST_BASE_URL,
      method: 'delete',
      params: { id }
    })
  }
}
